생성자 함수와 class
❓질문
자바스크립트에서 생성자 함수가 무엇인지, class 문법은 왜 도입되었는지 설명해주세요.
💡 조사하기전 내가 알고 있던 내용
생성자함수는 객체를 생성하기 위한 하나의 문법입니다.
과거에는
function Person(name, age) {
this.name = name;
this.age = age;
}
... //프로토타입 체인에 넣어 Person의 기능을 추가하는 코드
const person = new Person("kim",17)
이런식으로 클래스에 대한 문법도 정의되지않았고 생성자 함수에 대한 명확한 기준도 없었기때문에 기존의 다른 언어들을 쓰다가 자바스크립트로 넘어온사람들은 마치 파이썬을 처음 본 사람 처럼 문법을 다시 정리할 필요성이 있었습니다..
그러나 es6 이후로 클래스 문법이 추가되었습니다.
사람들은 프로토타입 기반 상속을 지원하는 자바스크립트가 클래스 기반 상속을 만들어야하냐는등 문법적 설탕이라는 말이 나왔었지만
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`안녕하세요, 저는 ${this.name}입니다.`);
}
}
const person2 = new Person('Bob', 30);
이렇게 생성자와 메서드를 명확하게 구분 지어 정의할 수 있게되었고 또한 다른 객체지향 언어와 유사한 문법의 형태를 띄고있다는 장점이 있습니다.
🏫 정리한 내용
자바스크립트에서 클래스가 꼭 필요하냐라는 말에는 잘 모르겟다
리액트 같은 프레임워크에서도 클래스 문법을 자주 쓰던 시절이 있다 하지만 지금은 함수형 컴포넌트와 훅의 사용으로 클래스로 된 프론트개발을 찾아 보기 힘들고
함수와 클로저, 객체 리터널만으로도 대부분의 개발이 가능하다
그러나 게임 개발이나 객체 지향적 구조를 확실하게 강조 하고 싶을때 클래스 문법을 사용하는 곳도 있다.
es6문법이 도입되면서 명확하게 이런 구조를 잡을 수 있게 되었다고 생각한다.